SET QUOTED_IDENTIFIER ON
GO
SET ANSI_NULLS ON
GO
CREATE PROCEDURE [dbo].[SP_TXMVTO_CNTB_I44]
/*-------------------------------------------------------------------*/                          
/*----- Empresa           : OFISIS S.A.                          ----*/                          
/*----- Cliente           : OFISIS S.A.                          ----*/                          
/*----- Sistema           : Contabilidad                         ----*/                          
/*----- Modulo            : Empresa                              ----*/                          
/*----- Programa          : Ajuste por Diferencia de cambio Docs(EN LINEA 'ORI') ----*/                          
/*----- Nombre            : SP_TXMVTO_CNTB_I44                   ----*/                          
/*----- Script            : TXMVTO_CNTB                          ----*/                          
/*----- Desarrollado por  : PDGV                                 ----*/                          
/*----- Fecha             :                                      ----*/                          
/*----- Base de Datos     : MS SQL Server                        ----*/                          
/*----- Version BD        : 8.0                                  ----*/                          
/*-------------------------------------------------------------------*/                          
/*----- COMENTARIOS       : NO LLAMA GESTION CASO                ----*/          
/*-------------------------------------------------------------------*/          
/*-------------------------------------------------------------------*/                        
/*----- Modificado 1 por  : Gustavo Espinoza                     ----*/                        
/*----- Fecha Modifica    : 19/08/2005                            ----*/                        
/*----- Detalle Modifica  : Se adiciono el isnull en cursor x caso q la fecha de doc venc es null, ---*/  
/*-----                     tome la fecha de doc. (envio de teso)                                  ---*/  
/*-------------------------------------------------------------------*/                       
/*----- Drop proc SP_TXMVTO_CNTB_I44                             ----*/                          
/*----- Grant all on SP_TXMVTO_CNTB_I44 to PUBLIC                ----*/                          
/*----- SP_TXMVTO_CNTB_I44                                                                
EXEC SP_TXMVTO_CNTB_I44  '01',1,'001','011','096','0000000001','0000000001','12151','COM','DOL',28,2,2003                          
----*/                          
/*-------------------------------------------------------------------*/                          
@ISCO_EMPR           TD_VC_002,       
@ISCO_USUA_MODI      TD_VC_008,  
@IDFE_USUA_MODI      TD_DT_001,  
@INNU_CNTB_EMPR      TD_IN_001_CONT,                          
@ISCO_UNID_CNTB      TD_VC_003,                          
@ISCO_OPRC_CNTB      TD_VC_003,                          
@ISNU_ASTO           TD_VC_010,                          
@ISCO_CNTA_EMPR      TD_VC_020_CNTA,                          
@ISST_CNTA_NATU      TD_VC_003,  -- 'COM' 0 'VEN'                        
@IDFE_ASTO_CNTB      TD_DT_001,                          
@INNU_MESE           TD_IN_002_MESE,                          
@INNU_ANNO           TD_IN_004_ANNO,                          
@ISTI_AUXI_EMPR      TD_VC_001,                          
@ISCO_AUXI_EMPR      TD_VC_020,                           
@ISTI_DOCU           TD_VC_003,                          
@ISNU_DOCU           TD_VC_020,                            
@INNU_SECU           TD_IN_002,         
@INNU_PROC           TD_IN_001,    
@ISST_DIFE_MAYO      TD_VC_001    
As                          
Begin Transaction SP_TXMVTO_CNTB_I44                          
                          
Declare                           
 @VDFE_VOUC          TD_DT_001,                          
 @VDFE_CAMB          TD_DT_001,                          
 @CNIM_ORIG_SALD     TD_NU_016_004,                          
 @CNIM_SOLE_SALD     TD_NU_016_004,                
 @CSTI_DOCU          TD_VC_003,                          
 @CSNU_DOCU          TD_VC_020,                          
 @CDFE_DOCU          TD_DT_001,                          
 @VNIM_ORIG_MVTO     TD_NU_016_004,                          
 @VNIM_SOLE_MVTO     TD_NU_016_004,                          
 @VNTO_SALD_ORIG     TD_NU_016_004,                          
 @VNTO_SALD_SOLES    TD_NU_016_004,                          
 @VNTO_AJUS          TD_NU_016_004,                          
 @VSCO_CNTA_GANA     TD_VC_020_CNTA,                          
 @VSCO_CNTA_PERD     TD_VC_020_CNTA,                          
 @VSTI_OPER          TD_VC_003,                          
 @VNTO_CNTA_GANA     TD_NU_016_004,                     
 @VNTO_CNTA_PERD     TD_NU_016_004,                          
 @VNTO_GANA_PEND     TD_NU_016_004,                          
@VNTO_PERD_PEND     TD_NU_016_004,                          
 @VNNU_SECU          TD_IN_002,                           
 @VNNU_SECU_PEND     TD_IN_002,                           
 @VSCO_MONE_CNTB     TD_VC_003,                          
 @VDFE_DOCU          TD_DT_001,                          
 @CSTI_AUXI_EMPR     TD_VC_001,                          
 @CSCO_AUXI_EMPR     TD_VC_020,                          
 @VSID_GANA_CAMB     TD_VC_003,                          
 @VSID_PERD_CAMB     TD_VC_003,                          
 @VNFA_CMPR_REFE     TD_NU_015_006,                       
 @VNFA_VNTA_REFE     TD_NU_015_006,                          
 @VDFE_ASTO_CNTB   TD_DT_001,                          
 @VNFA_CAMB_DIAR     TD_NU_015_006,                          
 @VSST_CNTA          TD_VC_001,                          
 @VNFA_CMPR_CNTA     TD_NU_015_006,                          
 @VNFA_VNTA_CNTA     TD_NU_015_006,                          
 @VNFA_CMPR_CNTB     TD_NU_015_006,                          
 @VNFA_VNTA_CNTB     TD_NU_015_006,                          
 @VSCO_MONE_CNTA     TD_VC_003,                          
 @VSCO_GANA_DIFE     TD_VC_020,                          
 @VSCO_PERD_DIFE     TD_VC_020,                          
 @VSCO_CNTA_AJUS     TD_VC_020, -- CUENTA SE ENVIA A PROC SP_TXMVTO_CNTB_I34 (GESTION)                         
 @VSST_AUXI_EMPR     TD_VC_001,                          
 @VSTI_AUXI_DCGA     TD_VC_001,                          
 @VSCO_AUXI_DCGA     TD_VC_020,                          
 @VSTI_AUXI_DCPE     TD_VC_001,                          
 @VSCO_AUXI_DCPE     TD_VC_020,                          
 @VSST_FLAG          TD_VC_001,                          
                          
---- Multimoneda                          
 @VSST_CNTA_CAMB     TD_VC_003,                          
 @VNIM_MVTO_ORI2     TD_NU_016_004,                          
 @VNFA_CAMB          TD_NU_015_006,                          
                          
 ---- Cursor CU_TXMVTO_CNTB_I10_2                          
 @CSCO_EMPR_0002     TD_VC_002,                          
 @CNNU_CNTB_EMP2     TD_IN_001_CONT,                          
 @VDFE_ASTO_CNT2     TD_DT_001,                          
 @CNTI_CAMB_0002     TD_VC_003,                          
 @CSCO_MONE_0002     TD_VC_003,                          
 @CNFA_CAMB_0002     TD_NU_015_006,                          
 @CSTI_OPER_0002     TD_VC_003,                          
 @CNIM_MVTO_ORI2     TD_NU_016_004,                          
 @CNIM_MVTO_CNT2     TD_NU_016_004,                          
 @CSTI_AUXI_EMP2     TD_VC_001,                          
 @CSCO_AUXI_EMP2     TD_VC_020,                          
 @CSTI_DOCU_0002     TD_VC_003,                          
 @CSNU_DOCU_0002     TD_VC_020,                            
 @CDFE_DOCU_0002     TD_DT_001,                           
 @CDFE_ASTO_0001     TD_DT_001,                      
----                       
 @VSID_DIFE          TD_VC_003,                  
 @VSID_0004          TD_VC_003,                      
 @VNIM_CARG          TD_NU_016_004,                              
 @VNIM_ABON          TD_NU_016_004,            
 @VSST_DFCA_LINE     TD_VC_001,                     
          
 @VSCO_EMPR          TD_VC_002,                          
 @VSST_TIPO_LETR     TD_VC_001,          
 @VSTI_AUXI_CLIE     TD_VC_001,          
 @VSTI_AUXI_PROV     TD_VC_001,           
 @CDFE_DOCU_VENC     TD_DT_001,
 @VSST_ORDE_SERV        TD_VC_001,
 @VSCO_ORDE_DCGA        TD_VC_020, @VSCO_ORDE_DCPE        TD_VC_020,
 @CSCO_ORDE_SER1        TD_VC_020,                    
 @CSCO_ORDE_SERV        TD_VC_020          
                          
--- Inicializar-------------                          
                          
 Select @VSTI_AUXI_DCGA = Null                          
 Select @VSCO_AUXI_DCGA = Null                          
 Select @VSTI_AUXI_DCPE = Null                          
 Select @VSCO_AUXI_DCPE = Null                          
                      
  ---------------------------                      
 -- saca saldo del documento                      
 ---------------------------                                      
            
 Select @VSID_DIFE = ''                        
 Select @VSID_0004 = ''                     
 Select Top 1 @VSID_DIFE = IsNull(Rtrim(ID_DIFE), ''), @VSID_0004 = IsNull(Rtrim(ID_0004), '')                        
 From TTCNTB_EMPR                         
 Where CO_EMPR = @ISCO_EMPR                         
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                         
          
 -- NO TOMA EN CUENTA LA LINEA DE DIFERENCIA DE CAMBIO                        
Select @VNIM_CARG = IsNull( SUM( ( ROUND( ((ASCII(t1.TI_OPER)/67) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0),                        
 @VNIM_ABON = IsNull( SUM( ( ROUND( ((65/ASCII(t1.TI_OPER)) * Isnull(t1.IM_MVTO_ORIG, 0)), 2))), 0)                         
From TXMVTO_CNTB t1--(index = ITXMVTO_CNTB_02 )                        
Where t1.CO_EMPR = @ISCO_EMPR                        
and t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                        
and t1.NU_ANNO  = @INNU_ANNO                        
and t1.NU_MESE  <= @INNU_MESE                        
and t1.CO_CNTA_EMPR = @ISCO_CNTA_EMPR                        
and t1.TI_AUXI_EMPR = @ISTI_AUXI_EMPR                        
and t1.CO_AUXI_EMPR = @ISCO_AUXI_EMPR                        
and t1.TI_DOCU = @ISTI_DOCU                    
and t1.NU_DOCU = @ISNU_DOCU                        
and t1.SI_MVTO_CNTB In ( 'APR', 'DIG')                        
And     Not Exists (Select t2.CO_EMPR From TTIDEN_OPER t2                        
   Where t2.CO_EMPR = @ISCO_EMPR                         
   And t2.NU_CNTB_EMPR = @INNU_CNTB_EMPR                         
   And t2.ID_OPRC In (@VSID_DIFE, @VSID_0004)                   
   And t2.CO_OPRC_CNTB = t1.CO_OPRC_CNTB )                        
                        
 /* SOLO SE EFECTUA DIF DE CAMBIO EN LINEA SI ES QUE ES UNA CANCELACION TOTAL*/                      
 If @VNIM_CARG - @VNIM_ABON  = 0                        
                      
Begin                       
                           
                          
  -- OBTIENE EL ULTIMO SECUENCIAL                           
                          
 Select @VNNU_SECU = IsNull(MAX(NU_SECU), 0) + 1                          
 From TXMVTO_CNTB                          
 Where CO_EMPR = @ISCO_EMPR                          
 And NU_CNTB_EMPR = @INNU_CNTB_EMPR                          
 And CO_UNID_CNTB = @ISCO_UNID_CNTB                            
 And CO_OPRC_CNTB = @ISCO_OPRC_CNTB                          
 And NU_ANNO      = @INNU_ANNO                          
 And NU_MESE      = @INNU_MESE                          
 And NU_ASTO      = @ISNU_ASTO                          
                    
                       
 /* Selecciona las cuenta de Ganacia y Perdida */                          
 Select @VSCO_MONE_CNTB = CO_MONE,                          
        @VSID_GANA_CAMB = ID_GANA_CAMB,                          
        @VSID_PERD_CAMB = ID_PERD_CAMB             
 From TTCNTB_EMPR                          
 Where CO_EMPR = @ISCO_EMPR                          
 and NU_CNTB_EMPR = @INNU_CNTB_EMPR                          
                          
 Select @VSST_AUXI_EMPR = 'N'                          
 Select @VSST_ORDE_SERV = 'N'                              
 Select @VSCO_CNTA_GANA = t1.CO_CNTA_EMPR,                          
   @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
   @VSST_ORDE_SERV = t2.ST_ORDE_SERV                          
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                          
 Where t1.CO_EMPR = @ISCO_EMPR                           
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t1.ID_CNTA = @VSID_GANA_CAMB                          
 And t2.CO_EMPR = t1.CO_EMPR                          
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                          
                          
 If @VSST_AUXI_EMPR = 'S'                          
   Begin                          
     Select @VSTI_AUXI_DCGA = NullIf(Rtrim(TI_AUXI_DCGA), ''),                          
            @VSCO_AUXI_DCGA = NullIf(Rtrim(CO_AUXI_DCGA), '')                          
     From   TMPARA_CONT                          
     Where  CO_EMPR = @ISCO_EMPR                           
   End                    

If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCGA = NullIf(Rtrim(CO_ORDE_DCGA), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                                    
                          
 Select @VSST_AUXI_EMPR = 'N'                          
 Select @VSST_ORDE_SERV = 'N'                                                           
 Select @VSCO_CNTA_PERD = t1.CO_CNTA_EMPR,                          
        @VSST_AUXI_EMPR = t2.ST_AUXI_EMPR,
        @VSST_ORDE_SERV = t2.ST_ORDE_SERV                          
 From TTIDEN_CNTA t1, TMPLAN_ANNO t2                          
 Where t1.CO_EMPR = @ISCO_EMPR                           
 And t1.NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
 And t1.ID_CNTA = @VSID_PERD_CAMB                          
 And t2.CO_EMPR = t1.CO_EMPR                          
 And t2.CO_CNTA_EMPR = t1.CO_CNTA_EMPR                          
                          
 If @VSST_AUXI_EMPR = 'S'               
   Begin                          
     Select @VSTI_AUXI_DCPE = NullIf(Rtrim(TI_AUXI_DCPE), ''),                          
            @VSCO_AUXI_DCPE = NullIf(Rtrim(CO_AUXI_DCPE), '')                          
     From TMPARA_CONT                          
     Where CO_EMPR = @ISCO_EMPR                           
   End                          

If @VSST_ORDE_SERV = 'S'                              
   Begin                              
     Select @VSCO_ORDE_DCPE = NullIf(Rtrim(CO_ORDE_DCPE), '')             
     From   TMPARA_CONT                              
     Where  CO_EMPR = @ISCO_EMPR                               
   End                                    
                          
---- Si hay amarre con Cuentas de Dif De cambio en la TMPLAN_EMPR. Toma esas cuentas------------                          
 Select @VSCO_GANA_DIFE = Ltrim(Rtrim(IsNull(CO_GANA_DIFE,''))),                          
        @VSCO_PERD_DIFE = Ltrim(Rtrim(IsNull(CO_PERD_DIFE,'')))                          
 From  TMPLAN_EMPR                          
 Where CO_EMPR = @ISCO_EMPR                          
 And   CO_CNTA_EMPR = @ISCO_CNTA_EMPR                          
                          
 If @VSCO_GANA_DIFE <> '' And @VSCO_PERD_DIFE <> ''                          
   Begin                          
     Select @VSCO_CNTA_GANA = @VSCO_GANA_DIFE                          
     Select @VSCO_CNTA_PERD = @VSCO_PERD_DIFE                          
   End                          
                          
/*Seccion para cuentAs que tengan Auxiliar */                          
 Select @CNIM_ORIG_SALD = 0                          
 Select @CNIM_SOLE_SALD = 0                          
 Select @VNIM_ORIG_MVTO = 0                          
 Select @VNIM_SOLE_MVTO = 0                          
 Select @VNTO_CNTA_GANA = 0                          
 Select @VNTO_CNTA_PERD = 0                          
 Select @VNTO_GANA_PEND = 0                          
 Select @VNTO_PERD_PEND = 0                          
 Select @VNTO_SALD_ORIG = 0                    
 Select @VNTO_SALD_SOLES  = 0                          
 Select @VNTO_AJUS = 0                          
                           
----- Se crean tablas temporales para Multimoneda                          
---- #TWMVTO_0001 guarda data para la conversi>n de importe en moneda contabilidad                          
 Create table #TWMVTO_0001                          
 (CO_EMPR       varchar(2) NULL,                          
  NU_CNTB_EMPR  integer NULL,                          
  FE_ASTO_CNTB  datetime NULL,                          
  TI_CAMB   varchar(3) NULL,                          
  CO_MONE       varchar(3) NULL,                          
  FA_CAMB       numeric(15,6) NULL,                          
  TI_OPER       varchar(3) NULL,                          
  IM_MVTO_ORIG  numeric(16,4) NULL,                          
IM_MVTO_CNTB  numeric(16,4) NULL,                          
  TI_AUXI_EMPR  varchar(1) NULL,                          
  CO_AUXI_EMPR  varchar(20) NULL,                          
  TI_DOCU       varchar(3) NULL,                          
  NU_DOCU       varchar(20) NULL,                          
  FE_DOCU       datetime NULL,                         
  FE_ASTO_0001  DateTime NULL,           
  FE_DOCU_VENC  DateTime Null, 
  CO_ORDE_SERV  Varchar(20) NULL)                          
                          
 ---- #TWMVTO_0002 guarda data para cursor CU_TXMVTO_CNTB_I10_1                          
 Create table #TWMVTO_0002                          
(TI_AUXI_EMP2  varchar(1) NULL,                          
  CO_AUXI_EMP2  varchar(20) NULL,                          
  TI_DOC2       varchar(3) NULL,                          
  NU_DOC2       varchar(20) NULL,                          
  FE_DOCU       datetime NULL,                           
  TI_OPER_0002  varchar(3) NULL,                          
  IM_MVTO_ORI2  numeric(16,4) NULL,                          
  IM_MVTO_CNT2  numeric(16,4)  NULL,                        
  FE_ASTO_0001  DateTime NULL,           
  FE_DOCU_VENC  DateTime Null, 
  CO_ORDE_SERV  Varchar(20) NULL)                          
                           
 ---- Insert Select con las condiciones del cursor CU_TXMVTO_CNTB_I10_1
 Insert into #TWMVTO_0001(CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB,
 CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR,
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, FE_DOCU_VENC,CO_ORDE_SERV)
 Select CO_EMPR, @INNU_CNTB_EMPR, FE_ASTO_CNTB, 
 TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR,                          
 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_CNTB, FE_DOCU_VENC,CO_ORDE_SERV
 From  TXMVTO_CNTB --( index = ITXMVTO_CNTB_02 )   /* (3)*/                          
 Where CO_EMPR = @ISCO_EMPR                           
  And NU_CNTB_EMPR = @INNU_CNTB_EMPR                           
  And NU_ANNO = @INNU_ANNO                           
  And NU_MESE  <= @INNU_MESE                           
  And CO_CNTA_EMPR  = @ISCO_CNTA_EMPR                           
  And TI_AUXI_EMPR = @ISTI_AUXI_EMPR                           
  And CO_AUXI_EMPR = @ISCO_AUXI_EMPR                           
  And TI_DOCU = @ISTI_DOCU                           
  And NU_DOCU = @ISNU_DOCU                          
  And SI_MVTO_CNTB  = 'APR'                           
  And ((ST_DIFE_CAMB = 'N' And NU_ANNO = @INNU_ANNO And NU_MESE = @INNU_MESE)                   
  Or (NU_ANNO = @INNU_ANNO And NU_MESE < @INNU_MESE))                   
 Order By TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                          
                          
 ---- Cursor para convertir importe original en importe moneda contabilidad                          
 Declare CU_TXMVTO_CNTB_I44_2 Cursor                          
 For                           
   Select CO_EMPR, NU_CNTB_EMPR, FE_ASTO_CNTB, TI_CAMB, CO_MONE, FA_CAMB,                          
          TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
          TI_DOCU, NU_DOCU, FE_DOCU, FE_ASTO_0001, FE_DOCU_VENC,CO_ORDE_SERV                          
   From  #TWMVTO_0001                          
   Order by TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU                          
                          
 Open CU_TXMVTO_CNTB_I44_2                          
 Fetch CU_TXMVTO_CNTB_I44_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                          
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                          
 @CNIM_MVTO_CNT2, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                          
 @CDFE_DOCU, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1                          
                          
 While @@Fetch_status = 0                          
   Begin       
     ---- Convierte importe original en importe moneda contabilidad                           
     Select @VNIM_MVTO_ORI2 = @CNIM_MVTO_CNT2                          
                          
     ---- Inserta tabla temporal #TWMVTO_0002, campos serabn usados en el cursor CU_TXMVTO_CNTB_I10_1                          
     Insert into #TWMVTO_0002 VALUES(@CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,   
     @CDFE_DOCU, @CSTI_OPER_0002, @CNIM_MVTO_ORI2, @VNIM_MVTO_ORI2, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1)  
                          
 Fetch CU_TXMVTO_CNTB_I44_2 Into @CSCO_EMPR_0002, @CNNU_CNTB_EMP2, @VDFE_ASTO_CNT2,                          
 @CNTI_CAMB_0002, @CSCO_MONE_0002, @CNFA_CAMB_0002, @CSTI_OPER_0002, @CNIM_MVTO_ORI2,                          
 @CNIM_MVTO_CNT2, @CSTI_AUXI_EMP2, @CSCO_AUXI_EMP2, @CSTI_DOCU_0002, @CSNU_DOCU_0002,                  
 @CDFE_DOCU, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SER1                                          
 End /* While @@Fetch_status =0 */                          
                          
 Close CU_TXMVTO_CNTB_I44_2                          
 Deallocate CU_TXMVTO_CNTB_I44_2                          
                           
---- Proceso normal, solo se cambio la tabla del select del cursor,                          
---- tiene las mismas columnas pero con el importe de la moneda de la contabilidad                          
                        
 Select @VSST_FLAG = 'N'                        
 Declare CU_TXMVTO_CNTB_I44_1 Cursor                          
 For                           
   Select   TI_DOC2, NU_DOC2, Min(FE_DOCU), TI_AUXI_EMP2, CO_AUXI_EMP2,                          
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_ORI2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_ORI2, 0) ),2))), 0),                          
     Isnull(SUM( ( ROUND(((ASCII(TI_OPER_0002)/67)* Isnull(IM_MVTO_CNT2, 0)),2) - ROUND(( (65/ASCII(TI_OPER_0002))* Isnull(IM_MVTO_CNT2, 0) ),2))), 0),                         
     Min(FE_ASTO_0001), Min(ISNULL(FE_DOCU_VENC, FE_DOCU)),NullIf(Rtrim(Max(CO_ORDE_SERV)),'')  
   From #TWMVTO_0002                          
   Group By TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2
   Order By TI_AUXI_EMP2, CO_AUXI_EMP2, TI_DOC2, NU_DOC2
                          
 Open CU_TXMVTO_CNTB_I44_1                          
 Fetch CU_TXMVTO_CNTB_I44_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                           
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV                         
                           
 While @@Fetch_status = 0                          
   Begin                          

 -- EVALUA QUE SOLO GRABE PARA LAS CANCELACIONES YA QUE SI ES EL MISMO DIA NO HAY DIF DE CAMBIO                         
 If (@CDFE_ASTO_0001 != @IDFE_ASTO_CNTB) Or (Abs(@CNIM_SOLE_SALD) > 0)
 Begin                         
/*-------------INICIO CALCULO FACTOR DE CAMBIO (SOLO INGRESA 1 VEZ)------------------------*/
/*-----FIN CALCULO FACTOR DE CAMBIO -----------------*/                        
                        
     Select @VNTO_SALD_ORIG = 0                          
     Select @VNTO_SALD_SOLES = 0                          
     Select @VNTO_AJUS = 0                          
     Select @VNTO_SALD_ORIG = ROUND(@CNIM_ORIG_SALD,2)                          
     Select @VNTO_SALD_SOLES  = ROUND(@CNIM_SOLE_SALD,2)                          

     Select @VNTO_AJUS = ROUND(@VNTO_SALD_ORIG,2) - ROUND(@VNTO_SALD_SOLES,2)                          
                          
     If @VNTO_AJUS != 0.00                          
       Begin                           
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                           
           Begin                             
             Select @VNTO_AJUS = ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                          
                                
             If @VNTO_AJUS > 0.00                          
               Begin                            
                          
                  -- @IDFE_ASTO_CNTB EL LUGAR DE  @VDFE_VOUC                          
                 Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                          
                 /*Comentario : Insercion del Asiento de Ajuste*/                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                           
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                           
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,     
   FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV )  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
                 'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                       
                 @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
          @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)                          
                 If @@ERROR != 0                           
                   Begin           
                     Close CU_TXMVTO_CNTB_I44_1                          
                     Deallocate CU_TXMVTO_CNTB_I44_1                          
                     Rollback Tran                          
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
               End /* If @VNTO_AJUS > 0 */                
                          
             If @VNTO_AJUS < 0.00                          
               Begin                     
                 /*Comentario : Insercion del Asiento de Ajuste*/                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU,FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,  FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                          
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,     
      FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
        @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                           
                 'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO','APR', '  ', 'N', 'N', 'S', 1.000000,                      
                 @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
   @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
                 If @@ERROR != 0                          
                   Begin                           
                     Close CU_TXMVTO_CNTB_I44_1                          
                     Deallocate CU_TXMVTO_CNTB_I44_1                          
                     Rollback Tran                           
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                          
               End /* If @VNTO_AJUS < 0 */                          
           End  /* If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES > 0 ) */                          
    
         If( @VNTO_SALD_ORIG > 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
           Begin                          
             Select @VNTO_AJUS = abs(ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                          
             If @VNTO_AJUS > 0.00                          
               Begin                          
                 /*Comentario : Insercion del Asiento de Ajuste */                          
                 Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                            
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,     
   FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB,                          
                 1.000000, 'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                       
                 @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
   @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
                 If @@ERROR != 0                               
                   Begin                           
                     Close CU_TXMVTO_CNTB_I44_1                          
                     Deallocate CU_TXMVTO_CNTB_I44_1                          
                     Rollback Tran                                                                                                                                                                                               
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
                 Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                          
               End /* If @VNTO_AJUS > 0 */                          
                                   
             If @VNTO_AJUS < 0.00                          
               Begin                          
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                          
                 /*Comentario : Insercion del Asiento de Ajuste*/                          
          Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB,                          
                 NU_ANNO, NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR,                          
                 CO_AUXI_EMPR, TI_DOCU, NU_DOCU,FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER,                          
                 IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB,                            
                 FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,     
                 FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
                 Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
                 @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,       
                 @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU,'PAC', @VSCO_MONE_CNTB, 1.000000,                          
                 'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR','  ', 'N', 'N', 'S', 1.000000,                       
                 @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
                 @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
                 If @@ERROR != 0                               
                   Begin                           
                     Close CU_TXMVTO_CNTB_I44_1                          
                     Deallocate CU_TXMVTO_CNTB_I44_1                          
                     Rollback Tran                           
                     Return                          
                   End                          
                 Select @VNNU_SECU = @VNNU_SECU + 1                          
               End /* If @VNTO_AJUS < 0 */                          
           End /*If( @VNTO_SALD_ORIG > 0 ) And ( @VNTO_SALD_SOLES < 0 ) */                          
                          
         If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                          
           Begin                          
             Select @VNTO_AJUS =  (0.00 - ROUND(@VNTO_SALD_SOLES,2)) + ROUND(@VNTO_SALD_ORIG,2)                          
             If @VNTO_AJUS > 0.00                          
               Begin                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB,                          
               DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                      
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,     
               ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I44_1                          
                   Deallocate CU_TXMVTO_CNTB_I44_1                          
                   Rollback Tran                           
                   Return                          
                 End                   
            Select @VNNU_SECU = @VNNU_SECU + 1                          
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - ROUND(@VNTO_AJUS,2)                              
             End /* If @VNTO_AJUS > 0 */                          
                          
           If @VNTO_AJUS < 0.00                          
      Begin                          
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + abs(ROUND(@VNTO_AJUS,2))                          
               /*Comentario : Insercion del Asiento de Ajuste*/                        
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE, NU_ASTO,     
               NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB,     
               CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO,     
               ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG,     
               FE_DOCU_VENC, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'ABO', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I44_1                          
      Deallocate CU_TXMVTO_CNTB_I44_1                          
                   Rollback Tran                           
                   Return                          
                 End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End /* If @VNTO_AJUS < 0      */                          
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                          
                          
       If( @VNTO_SALD_ORIG < 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
         Begin                          
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2) - ROUND(@VNTO_SALD_ORIG,2)                          
           If @VNTO_AJUS > 0.00                          
           Begin                          
               Select @VNTO_PERD_PEND = @VNTO_PERD_PEND + ROUND(@VNTO_AJUS,2)                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
         Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,              
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                       
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
        ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR',  '  ', 'N', 'N', 'S', 1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                                              Begin                           
                 Close CU_TXMVTO_CNTB_I44_1                          
                 Deallocate CU_TXMVTO_CNTB_I44_1                          
                 Rollback Tran                           
                 Return                          
               End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End /* If @VNTO_AJUS > 0 */                          
                          
           If @VNTO_AJUS < 0.00                          
             Begin                          
               /*Comentario : Insercion del Asiento de Ajuste*/                          
           Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                       
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,   
        ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I44_1                          
                   Deallocate CU_TXMVTO_CNTB_I44_1                       
                   Rollback Tran                           
                   Return                          
                 End                          
               Select @VNNU_SECU = @VNNU_SECU + 1          
               Select @VNTO_GANA_PEND = @VNTO_GANA_PEND - abs(ROUND(@VNTO_AJUS,2))                            
             End /* If @VNTO_AJUS < 0      */                          
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                                
                          
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES > 0.00 )                          
         Begin                          
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                        
           If @VNTO_AJUS > 0.00                          
             Begin                          
             Select @VNTO_CNTA_PERD = @VNTO_CNTA_PERD + ROUND(@VNTO_AJUS,2)                              
               /*Comentario : Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                       
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,     
               ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,               
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'ABO', 0.00, @VNTO_AJUS, 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S',1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I44_1                          
                   Deallocate CU_TXMVTO_CNTB_I44_1                          
                   Rollback Tran                           
                 Return                          
                 End                          
               Select @VNNU_SECU = @VNNU_SECU + 1                          
             End                          
         End /*If( @VNTO_SALD_ORIG = 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                           
                          
       If( @VNTO_SALD_ORIG = 0.00 ) And ( @VNTO_SALD_SOLES < 0.00 )                          
         Begin                          
           Select @VNTO_AJUS =  ROUND(@VNTO_SALD_SOLES,2)                          
           If @VNTO_AJUS < 0.00                          
             Begin                          
               /* Insercion del Asiento de Ajuste*/                          
               Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,                          
               NU_MESE, NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR,                          
               TI_DOCU, NU_DOCU, FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG,                          
               IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB, NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR,                       
               CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG, NU_SECU_ORIG, CO_CNTA_ORIG, FE_DOCU_VENC, NU_PROC,     
               ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
               Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO,                          
               @INNU_MESE, @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @ISCO_CNTA_EMPR, @CSTI_AUXI_EMPR,                          
               @CSCO_AUXI_EMPR, @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, 'PAC', @VSCO_MONE_CNTB, 1.000000,                          
               'CAR', 0.00, abs(@VNTO_AJUS), 'AJUST x DIF.CAMBIO', 'APR', '  ', 'N', 'N', 'S', 1.000000,                       
               @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR, @CDFE_DOCU_VENC,     
               @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@CSCO_ORDE_SERV)  
               If @@ERROR != 0                               
                 Begin                           
                   Close CU_TXMVTO_CNTB_I44_1                          
                   Deallocate CU_TXMVTO_CNTB_I44_1                          
                 Rollback Tran                           
            Return                          
                 End               
               Select @VNNU_SECU = @VNNU_SECU + 1                          
               Select @VNTO_CNTA_GANA = @VNTO_CNTA_GANA - abs(ROUND(@VNTO_AJUS,2))                       
             End                           
         End  /*If( @VNTO_SALD_ORIG < 0 ) And ( @VNTO_SALD_SOLES > 0 )  */                          
     End  /*If @VNTO_AJUS != 0 */                          
                        
 End /*FIN  -- EVALUA QUE SOLO GRABE PARA              CANCELACIONES */                        
                        
 Fetch CU_TXMVTO_CNTB_I44_1 Into @CSTI_DOCU, @CSNU_DOCU, @CDFE_DOCU, @CSTI_AUXI_EMPR, @CSCO_AUXI_EMPR,                           
 @CNIM_ORIG_SALD, @CNIM_SOLE_SALD, @CDFE_ASTO_0001, @CDFE_DOCU_VENC,@CSCO_ORDE_SERV                          
                          
 End /* While @@Fetch_status =0 */                          
 Close CU_TXMVTO_CNTB_I44_1                          
 Deallocate CU_TXMVTO_CNTB_I44_1                          
                          
/* Insercion de cuenta de pTrdida en diferencia de cambio      */                          
 If @VNTO_CNTA_PERD != 0.00                          
   Begin                                
     If @VNTO_CNTA_PERD > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_CNTA_PERD < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
                          
     /*Comentario : Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                           
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                        
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_CNTA_PERD), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU, @ISCO_CNTA_EMPR,   
     @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCPE)  
     If @@ERROR != 0                          
       Begin                           
         Rollback Tran                          
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                          
   End                          
                          
/* Insercion de cuenta de pTrdida en diferencia de cambio Pendiente */                          
 If @VNTO_PERD_PEND != 0.00                          
   Begin                                
 If @VNTO_PERD_PEND > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_PERD_PEND < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
                          
     /*Comentario : Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO, NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                           
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_PERD, @VSTI_AUXI_DCPE, @VSCO_AUXI_DCPE, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_PERD_PEND), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,   
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCPE)  
     If @@ERROR != 0                          
       Begin                           
         Rollback Tran                          
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                           
  End                          
                
/* Insercion de cuenta de ganancia en diferencia de cambio */                          
 If @VNTO_CNTA_GANA != 0.00                          
   Begin                          
     If @VNTO_CNTA_GANA > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_CNTA_GANA < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
     /*Comentario :Insercion del Asiento de Ajuste*/                        
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,                          
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                          
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,   
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000, @VSTI_OPER, 0.00, abs(@VNTO_CNTA_GANA), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,   
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCGA)  
     If @@ERROR != 0                               
       Begin                           
         Rollback Tran                           
         Return                          
 End                       
     Select @VNNU_SECU = @VNNU_SECU + 1                          
   End                          
                          
/* Insercion de cuenta de ganancia en diferencia de cambio */                          
 If @VNTO_GANA_PEND != 0.00                          
   Begin                          
     If @VNTO_GANA_PEND > 0.00                          
       Begin                          
         Select @VSTI_OPER = 'CAR'                          
       End                                  
     Else If @VNTO_GANA_PEND < 0.00                          
       Begin                          
         Select @VSTI_OPER = 'ABO'                          
       End                          
     /*Comentario :Insercion del Asiento de Ajuste*/                          
     Insert Into TXMVTO_CNTB ( CO_EMPR, NU_CNTB_EMPR, CO_UNID_CNTB, CO_OPRC_CNTB, NU_ANNO,NU_MESE,              
     NU_ASTO, NU_SECU, FE_ASTO_CNTB, CO_CNTA_EMPR, TI_AUXI_EMPR, CO_AUXI_EMPR, TI_DOCU, NU_DOCU,                          
     FE_DOCU, TI_CAMB, CO_MONE, FA_CAMB, TI_OPER, IM_MVTO_ORIG, IM_MVTO_CNTB, DE_GLOS, SI_MVTO_CNTB,                          
     NO_GIRA, ST_GEST, ST_REDO, ST_DIFE_CAMB, FA_CAMB_DIAR, CO_UNID_ORIG, CO_OPRC_ORIG, NU_ASTO_ORIG,     
     NU_SECU_ORIG, CO_CNTA_ORIG, NU_PROC, ST_DIFE_MAYO, CO_USUA_CREA, FE_USUA_CREA, CO_USUA_MODI, FE_USUA_MODI,CO_ORDE_SERV)  
     Values( @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE,                          
     @ISNU_ASTO, @VNNU_SECU, @IDFE_ASTO_CNTB, @VSCO_CNTA_GANA, @VSTI_AUXI_DCGA, @VSCO_AUXI_DCGA, NULL, NULL,                          
     NULL,'PAC', @VSCO_MONE_CNTB, 1.000000,  @VSTI_OPER, 0.00, abs(@VNTO_GANA_PEND), 'AJUST x DIF.CAMBIO',                          
     'APR', '  ', 'N', 'N', 'S', 1.000000, @ISCO_UNID_CNTB, @ISCO_OPRC_CNTB, @ISNU_ASTO, @INNU_SECU,     
     @ISCO_CNTA_EMPR, @INNU_PROC, @ISST_DIFE_MAYO, @ISCO_USUA_MODI, @IDFE_USUA_MODI, @ISCO_USUA_MODI, @IDFE_USUA_MODI,@VSCO_ORDE_DCGA)  
     If @@ERROR != 0                               
       Begin                           
         Rollback Tran                           
         Return                          
       End                          
     Select @VNNU_SECU = @VNNU_SECU + 1                          
   End           
                                          
    If @VNTO_PERD_PEND != 0 Or @VNTO_CNTA_PERD != 0                         
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_PERD                        
                        
    If @VNTO_GANA_PEND != 0 Or @VNTO_CNTA_GANA != 0                         
      Select @VSCO_CNTA_AJUS = @VSCO_CNTA_GANA                        
                        
-- LLAMA A GESTION EN CASO CTA DE PERDIDA X DIF CAMBIO TENGA AMARRE                        
-- RESTA 1 PARA OBTENER EL SEC. DE CTA PERDIDA          
--    Select @VNNU_SECU = @VNNU_SECU - 1              
--    Exec SP_TXMVTO_CNTB_I34 @ISCO_EMPR, @INNU_CNTB_EMPR, @ISCO_UNID_CNTB,                          
--    @ISCO_OPRC_CNTB, @INNU_ANNO, @INNU_MESE, @ISNU_ASTO, @VSCO_CNTA_AJUS, 'ORI', @VNNU_SECU                          
                    
End  /* FIN SI SALDO ES IGUAL A CERO */               
            
                    
Commit Transaction                          
Return                          
/*-------------------------------- Fin -----------------------------*/      
  






GO
